from dolfinx import fem, mesh
from mpi4py import MPI
import numpy as np

# 创建共享一条边的两个三角形
msh = mesh.create_rectangle(
    MPI.COMM_WORLD,
    [(0, 0), (2, 1)],
    [1, 1],
    mesh.CellType.triangle
)

# CR元空间
V = fem.functionspace(msh, ("Crouzeix-Raviart", 1))

# 定义边中点坐标
edge_midpoint = np.array([1.0, 0.5, 0.0])  # 共享边的中点

# 创建测试函数
u = fem.Function(V)
u.interpolate(lambda x: np.sin(np.pi * x[0]))

# 检查边中点处的连续性
# （由于CR元特性，边中点处应连续，但边内部不连续）
value_at_midpoint = u.eval(edge_midpoint, np.array([0]))
print(f"边中点处的值: {value_at_midpoint[0]:.4f}")

# 检查边内部其他点的不连续性（需手动计算两个单元的值）
